
title = "string"
type = "写代码"
infomation = "字符串概念基础知识"
question = [[这一节我们来讲解字符串的本质

`字符串`，是用来存储一串字符的，但是`它的本质就是一串数字`。如何也一串数字来代表一串字符呢？

在计算机中，每一个符号都对应着一个数字，但是在讲解这个知识之前，我们了解一下补充知识：

```
在大多数编程语言中，我们使用0x开头来表示这个数字是16进制的。
比如
10等价于0x0a
256等价于0xff
```

接下来，你需要了解，每一个符号都对应着一个数字，比如：

`0`对应着`0x30`、`1`对应着`0x31`

`a`对应着`0x61`、`b`对应着`0x62`

`A`对应着`0x41`、`B`对应着`0x42`

上面的编码规则，我们称之为ascii码，具体想了解可以打开下面的网址查看：

http://ascii.911cha.com/

当然，1字节最大为0xff，即256，只能存下一部分符号，大部分的中文按某些编码，一个中文占用2或3个字节

计算机如何解析这些数据，我们不需要了解，当你知道了上面的知识后，你应该可以理解下面的描述：

```
字符串"apple"实际上的内容就是下面的一串数字：
0x61,0x70,0x70,0x6c,0x65
```

同时，lua的字符串中可以保存任何数值，即使是0x00这种不代表任何含义的数，也可以保存

`补充：在其他语言中（如C），0x00代表字符串结束，但是在lua中并不是这样。lua的字符串每字节可以存储任意的一字节数据。`

比如下面的描述：

```
有一串lua字符串中的数据为：
0x01,0x02,0x30,0x00,0x44
实际人能看到的（不可见字符用�代替）：
��0�D
当然，你不能说你看不见的数据就不存在，他们都完好无损地在这个字符串中
```

下面你只需要回答一个简单的问题，填到下面的框里就可以了：

一串字符串数据如下，它的实际内容是什么？

（指人能看见的字符串内容，如`abcd`）

0x62,0x61,0x6e,0x61,0x6e,0x61
]]
code = ""
explain = "需要深刻理解字符串的实际含义"

check = function(s)

    if not s:find("banana") then
        return "答案不对哦"
    end
    return ""
end
